Serverless Agents を利用して ECS on Fargate 環境で Sysdig Secure のマイニング検知をしてみた

Serverless Agents を利用して ECS on Fargate 環境で Sysdig Secure のマイニング検知をしてみた

Clock Icon2023.09.14

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

こんにちは、AWS事業本部の平木です!

今回は、Sysdig Secure から提供されている Serverless Agents を利用して ECS on Fargate 環境でマイニング検知をしてみました。

Sysdig Secure や Serverless Agents については、下記ブログを参照ください。

https://dev.classmethod.jp/articles/sysdig-secure-ecs-fargate-setting-up-terraform-overview/

前提条件

  • AWS アカウントを持っていること
  • Terraform の実行環境があること
  • Sysdig Secure のアカウントを持っていること

Sysdig Secure の導入については下記ブログも参照ください。

https://dev.classmethod.jp/articles/sysdig-secure1-to-scan-container-images/

デプロイされるリソース

下記リソースをデプロイします。

  • VPC
  • Subnet(Public/Private)
  • Route Table
  • Internet Gateway
  • Nat Gateway
  • EC2(疑似アタック用サーバ)
  • EC2 Instance Connect Endpoint
  • Network Load Balancer
  • ECS Cluster
    • Sysidig Orchastrator Agent
    • Security Playground(擬似アタック被害コンテナ) + Sysdig Workload Agent

構成図

構成図としては下記のようになります。[1]

image

通信要件

下記のような通信経路になります。[2]

EC2 Instance Connect でプライベート接続

EC2 サーバから curl コマンドで疑似アタックを実施(TCP:8080)

Workload Agent でランタイム検知

Workload Agent から Orchestrator Agent へ転送(TCP:6667)

Orchestrator Agent 経由で Sysdig Secure へ転送(TCP:6443)

image

やってみる

環境構築

デプロイ用の Terraform のコードを GitHub のリポジトリに配置しています。

https://github.com/Keisuke-Hiraki/ECS-Fargate-Sysdig-Secure-Mining-Detection/tree/main

下記コマンドでリポジトリのクローンからデプロイまで実施します。

クローン

git clone https://github.com/Keisuke-Hiraki/ECS-Fargate-Sysdig-Secure-Mining-Detection.git

初期化

terraform init

作成

terraform apply \
-var 'access_key=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx' \
-var 'secure_api_token=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx' \
-var 'collector_url=xxx.xxx.sysdig.com' \
-var 'sysdig_secure_url=https://xxx.xxx.sysdig.com' 

各パラメータについては下記をご確認ください。

Ex.) US West (Oregon) の場合
collector_urlingest-us2.app.sysdig.com
sysdig_secure_urlhttps://us2.app.sysdig.com

デプロイが完了し、Sysdig Secure の画面で「Integrations > Sysdig Agents」の順で選択すると、
Status が Up to Date のノードが検出されていることが確認できます。
表示されればデプロイ完了です。

マイニング検知してみる

今回は、Sysdig Runtime Threat Intelligence という ランタイムポリシーの中の、
Detect outbound connections to common miner pool ports というルールを使用し、検知してみます。

こちらのルールは、一般的に使用されているマイニングプールポートアドレスと、宛先の DNS および IP アドレスを監視し検知するものになります。
まずは対象 IP アドレスは下記順を追ってみることができます。

Policies > Rules > Rules Library の順に進みます。

image

左上の検索窓に Detect outbound connections to common miner pool ports と検索し、
対象の Rule を押下、さらに右側の net_miner_pool を押下します。

image

続いて minerpool_other を押下します。

image

最後、 miners_ip を押下すると IP のリストが表示されます。

image

ここで表示された IP アドレスを後で使用するため控えておいてください。

前提

「Policies > Runtime Policies」から

  • Sysdig Runtime Threat Intelligence
  • Sysdig Runtime Notable Events

が 有効化されていることを確認します。

image

image

踏み台サーバから疑似アタックする

EC2 Instance Connect エンドポイントを使用しアクセスできるようになっているため、
起動している EC2 インスタンスへ接続します。

image

image

まず下記コマンドで Sysdig Secure でマイニング以外の攻撃の検知ができるか確認します。

ここの<攻撃対象のPrivate IP アドレス>は、workload 用 ECS サービスのプライベート IP アドレスをご確認ください。

curl <攻撃対象のPrivate IP アドレス>:8080/etc/shadow

検証した環境では、10.0.1.108 だったため、

image

curl 10.0.1.108:8080/etc/shadow

と実行したところ、

image

機密ファイル(ユーザー/パスワード/認証情報を含むファイルなど)を読み取ろうとした場合に検知される、
Read sensitive file untrusted が表示されました。

では続いて本題である、マイニング検知を実施してみます。

下記コマンドを実行します。

curl -X POST <攻撃対象のPrivate IP アドレス>:8080/exec -d 'command=curl <マイナープールの IP アドレス>'

実行してみたところ

image

image

上記のようにリアルタイムで検知できていることが分かりました。

片づけ

下記コマンドで環境を削除できます。

terraform destroy \
-var 'access_key=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx' \
-var 'secure_api_token=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx' \
-var 'collector_url=xxx.xxx.sysdig.com' \
-var 'sysdig_secure_url=https://xxx.xxx.sysdig.com' 

参考

おわりに

以上が Sysdig Secure でマイニング検知してみた、でした!
ぜひ Sysdig Secure を活用しセキュアに ECS on Fargate を使ってみてください。

万が一 AWS から不正なアクティビティを検知した場合にはこちらもご確認ください。
AWS アカウントでの不正なアクティビティに関する問題を解決する | AWS re:Post

この記事がどなたかの役に立てば嬉しいです。

脚注
  1. 構成図に誤りがあったため訂正しております。(2023/09/16) ↩︎

  2. 同上 ↩︎

Share this article

facebook logohatena logotwitter logo

© Classmethod, Inc. All rights reserved.